package com.duke.app.smart.bark;
 
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.speech.RecognizerIntent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
 
/**
 * A very simple application to handle Voice Recognition intents
 * and display the results
 */
public class SpeechActivity extends Activity
{
 
    private static final int REQUEST_CODE = 1234;
	public final static int SUCCESS_RETURN_CODE = 1;
    private ListView wordsList;
    private boolean isDone;
    private String voice;
 
    /**
     * Called with the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.voice_recog);
 
//        Button speakButton = (Button) findViewById(R.id.speakButton);
 
//        wordsList = (ListView) findViewById(R.id.list);
 
        // Disable button if no recognition service is present
//        PackageManager pm = getPackageManager();
//        List<ResolveInfo> activities = pm.queryIntentActivities(
//                new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
//        if (activities.size() == 0)
//        {
//            speakButton.setEnabled(false);
//            speakButton.setText("Recognizer not present");
//        }
//        Context context = getBaseContext();
        Toast.makeText(SpeechActivity.this, "Starting Speech Recognition1", Toast.LENGTH_SHORT).show();
//        Toast.makeText(context, "Starting Speech Recognition1", Toast.LENGTH_SHORT).show();
        startVoiceRecognitionActivity();
    }
 
    /**
     * Handle the action of the button being clicked
     */
    public void speakButtonClicked(View v)
    {
        startVoiceRecognitionActivity();
    }
 
    /**
     * Fire an intent to start the voice recognition activity.
     */
    private void startVoiceRecognitionActivity()
    {
//        Context context = getBaseContext();
//        Toast.makeText(context, "Starting Speech Recognition", Toast.LENGTH_SHORT).show();
        Toast.makeText(SpeechActivity.this, "Starting Speech Recognition", Toast.LENGTH_SHORT).show();

        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        //intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
        //        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        //intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo...");
        startActivityForResult(intent, REQUEST_CODE);
    }
 
    /**
     * Handle the results from the voice recognition activity.
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
        {
            // Populate the wordsList with the String values the recognition engine thought it heard
            ArrayList<String> matches = data.getStringArrayListExtra(
                    RecognizerIntent.EXTRA_RESULTS);
            ArrayList<String> temp = new ArrayList<String>();
            temp.add(matches.get(0));
//            Context context = getBaseContext();
//            Toast.makeText(context, matches.get(0), Toast.LENGTH_SHORT).show();
            Toast.makeText(SpeechActivity.this, matches.get(0), Toast.LENGTH_SHORT).show();
//            wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
//                    temp));
            voice = temp.get(0);
            isDone = true;
            
            /*Intent intent = new Intent();
			Bundle b = new Bundle();
			b.putString("TEXT", voice);
			intent.putExtras(b);
			setResult(SUCCESS_RETURN_CODE, intent);
			finish();*/
            setResult(resultCode, data);
        }
        finish();
        //super.onActivityResult(requestCode, resultCode, data);
    }
    
    public boolean isDoneConverting() {
    	return isDone;
    }
    
    public String getConvertedString() {
    	if(isDone)
    		return voice;
    	else
    		return "";
    }
}